package com.controller;

import com.POJO.User;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @Package com.controller
 * @Date 2024-05-23 12:04
 * @Description 用户操作相关接口，前端对应editUserInfo
 */
@Controller
public class UserController {

    private UserService userService;

    /**
     * 自动注入 UserService 实例
     * @param userService 用户服务实例
     */
    @Autowired
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    /**
     * 跳转到登录页面
     * @return 登录页面视图
     */
    @GetMapping("/")
    public String toLogin(){
        return "login";
    }

    /**
     * 处理用户登录请求
     * @param username 用户名
     * @param password 密码
     * @param request HTTP 请求
     * @param model 视图模型
     * @return 登录结果视图或重定向到主页
     */
    @PostMapping("/login")
    public String login(@RequestParam("username") String username, @RequestParam("password") String password,
                        HttpServletRequest request, Model model) {
        // 判断用户名或密码是否为空
        if("".equals(username) || "".equals(password)) {
            // 如果为空，设置错误信息并返回登录页面
            model.addAttribute("msg", "密码不能为空！");
            model.addAttribute("code", "500");
            return "login";
        } else {
            // 验证登录
            User user = userService.getUser(username);
            // 判断用户是否存在或密码是否正确
            if (user == null || "".equals(user.getPassword()) || !password.equals(user.getPassword())) {
                model.addAttribute("msg", "用户名或密码有误，请检查！");
                model.addAttribute("code", "500");
                return "login";
            } else {
                // 如果正确，将用户信息存入 Session
                user.setPassword(""); // 清空密码以保证安全
                request.getSession().setAttribute("user", user);

                // 根据用户角色跳转到不同的首页
                switch (user.getRole()) {
                    case "student":
                        request.getSession().setAttribute("student", user);
                        return "redirect:/student/";
                    case "teacher":
                        request.getSession().setAttribute("teacher", user);
                        return "redirect:/teachers/";
                    default:
                        model.addAttribute("msg", "未知的用户角色");
                        model.addAttribute("code", "500");
                        return "login";
                }
            }
        }
    }

    /**
     * 处理获取用户列表请求
     * @param model 视图模型
     * @return 编辑用户信息页面视图
     */
    @GetMapping("/editUserInfo")
    public String home(Model model) {
        // 获取所有用户信息
//        List<User> list = userService.getAllUser();
        // 将用户信息添加到模型中
//        model.addAttribute("list", list);
        return "editUserInfo"; // 返回编辑用户页面
    }

    /**
     * 处理更新用户信息请求
     * @param user 用户对象
     * @return 重定向到编辑用户信息页面
     */
    @RequestMapping("/update")
    public String update(@ModelAttribute("user") User user) {
        // 调用 UserService 的 updateUser 方法更新用户信息
        userService.updateUser(user);
        return "redirect:/editUserInfo";
    }


    //     * 处理删除用户请求
    //     * @param user_id 用户ID
    //     * @param model 视图模型
    //     * @return 重定向到编辑用户信息页面
    //     */
    //    @GetMapping("/delete")
    //    public String delete(@RequestParam("user_id") int user_id, Model model) {
    //        // 调用 UserService 的 deleteUser 方法删除用户
    //        userService.deleteUser(user_id);
    //        return "redirect:/editUserInfo";
    //    }
}
